Міністерство освіти і науки України
Національний університет «Львівська політехніка»
Кафедра захисту інформації
/
Звіт
Про виконання лабораторної роботи № 3
з дисципліни:
«Комп'ютерні методи дослідження інформаційних
процесів і систем»
Варіант 1
До ітераційних методів належать: метод простої ітерації, метод Зейделя, метод верхньої релаксації та інші.
Метод Зейделя
Є система лінійних алгебраїчних рівнянь, що зведена до нормального вигляду
.
Тоді за методом Зейделя, вибираючи вектор початкових наближень
(як правило, це стовпець вільних членів ), уточнення значень невідомих проводять наступним чином:
1) перше наближення:
2) k + 1 наближення
k = 0, 1, 2, … .
Таким чином ітераційний процес подібний до методу простих ітерацій, однак уточнені значення одразу ж підставляються в наступні рівняння:
– метод Зейделя.
Іншими словами, метод Зейделя відрізняється від методу простої ітерації тим, що при обчисленні на “k+1”-му кроці враховуються значення , , , обчислені на цьому самому кроці.
Слід сподіватись, що ітерації за методом Зейделя дадуть при тому ж числі кроків більш точні результати, ніж за методом простої ітерації. Або така ж точність буде досягнута за менше число кроків, оскільки чергові значення невідомих визначаються тут більш точно ітераційний процес припиняється.
Якщо візьмемо систему
для якої точний розв’язок
Обчислення проведемо згідно формул:
.
За початкове наближення вибираємо вектор
Достатні умови збіжності ітераційного методу Зейделя
для всіх
і якщо хоча б для одного і ця нерівність строга
.
Завдання
Розв’язати систему лінійних алгебраїчних рівнянь методом Зейделя.
, k = 0;
p = 0;
Список індентифікаторів, змінних, функцій, використаних у блок-схемі алгоритму і програмі, та їх пояснення
double – тип з плаваючою точкою подвійної точності;
if-else - умовний оператор;
while - оператор циклу з передумовою;
public – модифікатор доступу, члени якого доступні з будь-якого місця програми ;
Main() – головна функція;
Abs (x)- повертає абсолютне значення x;
int – тип з 32-бітовим цілим числом з знаком.
Блок-схема алгоритму програми
-
+
+
-
Текст програми
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Laboratorna_robota3
{
class Labwork
{
public int i;
public int j;
public int n = 4;
public double m;
public double k;
public double p;
public double f;
public double t;
public double S;
public double Sum1 = 0;
public double Sum2 = 0;
public double E = 0.0001;
public double[,] A;
public double[] x;
public double[,] a;
public double[] b;
public void koeficienty()
{
Console.Write("введiть k=");
k = Convert.ToInt32(Console.ReadLine());
Console.Write("введiть p=");
p = Convert.ToInt32(Console.ReadLine());
S = 0.2 * k;
t = 0.2 * p;
}
public void print()
{
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
Console.Write(a[i, j] + "x" + (j + 1));
Console.Write("+");
}
Console.WriteLine("=" + b[i]);
}
Console.WriteLine();
}
public void Zejdell_metod()
{
a = new double[n, n];
b = new double[n];
A = new double[n, n];
x = new double[n];
a[1, 0] = 3.3;
a[1, 1] = (12.62+S);
a[1, 2] = 4.1;
a[1, 3] = 1.9;
a[0, 0] = 3.92;
a[0, 1] = 8.45;
a[0, 2] = (1.78-S);
a[0, 3] = 1.4;
a[2, 0] = 3.77;
a[2, 1] = (1.21 + S);
a[2, 2] = 8.04;
a[2, 3] = 0.2...